#ifndef DATA_STORE_H
#define DATA_STORE_H

#include <vector>
#include <string>
#include "Task.h"

/**
 * @brief 数据存储接口
 * 
 * 定义保存和加载任务数据的方法
 */
class DataStore {
public:
    virtual ~DataStore() = default;
    
    /**
     * @brief 保存任务列表
     * @param tasks 要保存的任务列表
     */
    virtual void save(const std::vector<Task>& tasks) = 0;
    
    /**
     * @brief 加载任务列表
     * @return std::vector<Task> 加载的任务列表
     */
    virtual std::vector<Task> load() = 0;
};

/**
 * @brief 文件数据存储实现
 * 
 * 将任务数据保存到文件中
 */
class FileDataStore : public DataStore {
public:
    /**
     * @brief 构造函数
     * @param filename 数据文件名
     */
    explicit FileDataStore(const std::string& filename);
    
    void save(const std::vector<Task>& tasks) override;
    std::vector<Task> load() override;
    
private:
    std::string filename;  ///< 数据文件名
};

#endif // DATA_STORE_H